package com.zzyl.mapper;

import com.github.pagehelper.Page;
import com.zzyl.dto.DeviceDataPageReqDto;
import com.zzyl.dto.DevicePageQueryDto;
import com.zzyl.entity.Device;
import com.zzyl.vo.DeviceDataVo;
import com.zzyl.vo.DeviceVo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @ Description: 设备持久层
 * @ BelongsProject: zzyl-cp
 * @ Author: G攀
 * @ CreateTime: 2024-09-09  20:24
 * @ Version: 1.0
 */
@Mapper
public interface DeviceMapper {
    /**
     * 根据设备名称查找设备
     */
    @Select("select count(1) from device where device_name = #{deviceName}")
    Long countByDeviceName(String deviceName);

    /**
     * 保存设备信息
     */
    void insertSelective(Device device);

    /**
     * 分页查找设备
     */
    Page<DeviceVo> page(DevicePageQueryDto pageQueryDto);

    /**
     * 根据IOTID，查询设备详情
     */
    DeviceVo queryDeviceDetailByIotId(String iotId);

    /**
     * 更新设备信息
     */
    void updateSelective(Device device);

    /**
     * 根据IOTID来判断设备是否存在
     */
    @Select("select count(1) from device where iot_id = #{iotId}")
    Long countByIotId(String iotId);

    /**
     * 根据IOTID来删除设备
     */
    @Delete("delete from device where iot_id = #{iotId}")
    void deleteSelective(String iotId);

    /**
     * 检测的设备是随身设备，直接绑定的是老人，可以通过老人id找到护理员ID
     */
    List<Long> selectNursingIdsByIotIdWithElder(String iotId);

    /**
     * 检测的设备是固定设备（床位），可以通过床位ID关联找到老人，之后通过老人ID找到护理员的ID
     */
    List<Long> selectNursingIdsByIotIdWithBed(String iotId);
}
